// Background script for Web Element Selector extension

// 使用通知显示消息，而不是alert (service worker不支持alert)
function showNotification(message) {
  // 使用Chrome通知API
  chrome.notifications.create({
    type: 'basic',
    iconUrl: '/images/icon128.png',
    title: '网页元素选择器',
    message: message,
    priority: 2
  });
}

// Listen for clicks on the extension icon
chrome.action.onClicked.addListener((tab) => {
  // 检查是否是chrome:// URL或其他特殊URL
  if (tab.url.startsWith('chrome://') || 
      tab.url.startsWith('chrome-extension://') || 
      tab.url.startsWith('edge://') || 
      tab.url.startsWith('about:') || 
      tab.url.startsWith('chrome-search://') ||
      tab.url.startsWith('devtools://')) {
    // 在特殊页面上，显示无法使用扩展的提示
    showNotification("由于浏览器安全限制，此扩展无法在浏览器内部页面（chrome://、about:等）上使用。请在普通网页上使用。");
    return;
  }

  // 首先检查标签页是否已完全加载
  if (tab.status === 'complete') {
    // 尝试发送消息到内容脚本
    try {
      chrome.tabs.sendMessage(tab.id, { action: "toggleSelector" }, (response) => {
        // 捕获可能的连接错误
        if (chrome.runtime.lastError) {
          console.log("内容脚本可能尚未加载: " + chrome.runtime.lastError.message);
          
          // 尝试注入内容脚本和CSS
          Promise.all([
            chrome.scripting.insertCSS({
              target: { tabId: tab.id },
              files: ['css/content.css']
            }),
            chrome.scripting.executeScript({
              target: { tabId: tab.id },
              files: ['js/content.js']
            })
          ]).then(() => {
            // 脚本注入后再次尝试发送消息
            setTimeout(() => {
              chrome.tabs.sendMessage(tab.id, { action: "toggleSelector" });
            }, 200);
          }).catch(err => {
            console.error("注入脚本或CSS失败:", err);
            
            // 显示更友好的错误提示
            let errorMessage = "无法在当前页面上运行此扩展。";
            if (err.message.includes("Cannot access")) {
              errorMessage = "由于浏览器安全限制，此扩展无法在当前页面上运行。请在普通网页上使用。";
            }
            showNotification(errorMessage);
          });
        }
      });
    } catch (err) {
      console.error("发送消息时出错:", err);
      showNotification("与内容脚本通信失败，请刷新页面后重试。");
    }
  } else {
    // 如果页面尚未完全加载，显示提示
    showNotification("请等待页面完全加载后再使用此扩展。");
  }
}); 